/*  types.h
    
    Defintion of types.

    Nicholas Green
    Lexical Analyzer
*/

typedef unsigned char  u8;
typedef unsigned short u16;
typedef unsigned int   u32;
typedef char           s8;
typedef short          s16;
typedef int            s32;

/*
Didn't have time to do a C-Style.
May do one later if I have a chance.
#ifdef C_STYLE
#define _F_STYLE 0
#else
#define _F_STYLE 1
#endif
*/

#define _F_STYLE 1
#define MAX_SIZE 512

extern const char* DISPLAY;
extern const char* DISPLAYN;
extern const char* VARDEF;
extern const char* COMMENT;
extern const char* FUNCDEF; // Function Definition
extern const char* TYPE_NULL;
extern const char* SSQ;
extern const char* WHILE;
extern const char* FUNC_CALL;
extern const char* EXPR;


extern const char* OP_ASN; // "OP_ASN";

// ARITHMETIC OPERATORS
 extern const char* AOP_ADD; // "AOP_ADD";
 extern const char* AOP_SUB; // "AOP_SUB";
 extern const char* AOP_MUL; // "AOP_MUL";
 extern const char* AOP_DIV; // "AOP_DIV";
 extern const char* AOP_MOD; // "AOP_MOD";

// LOGICAL OPERATORS
 extern const char* LOP_NOT; // "LOP_NOT";
 extern const char* LOP_AND; // "LOP_AND";
 extern const char* LOP_OR; // "LOP_OR";

// BITWISE OPERATORS
 extern const char* BOP_NOT; // "BOP_NOT";
 extern const char* BOP_AND; // "BOP_AND";
 extern const char* BOP_OR; // "BOP_OR";
 extern const char* BOP_XOR; // "BOP_XOR";
 extern const char* BOP_LSFT; // "BOP_LSFT";
 extern const char* BOP_RSFT; // "BOP_RSFT";
// COMPARISON OPERATORS
 extern const char* COP_EQUAL; // "COP_EQUAL";
 extern const char* COP_NEQUAL; // "COP_NEQUAL";
 extern const char* COP_GREATER; // "COP_GREATER";
 extern const char* COP_LESS; // "COP_LESS";
 extern const char* COP_GRTEQU; // "COP_GRTEQU";
 extern const char* COP_LESEQU; // "COP_LESEQU";

extern const char* SYM_BANG; // "SYM_BANG";
extern const char* SYM_AT; // "SYM_AT";
extern const char* SYM_HASH; // "SYM_HASH";
extern const char* SYM_CARET; // "SYM_CARET";

extern const char* COND_IF; // "COND_IF";
extern const char* COND_ELSE; // "COND_ELSE";
extern const char* COND_SWITCH; // "COND_SWITCH";
extern const char* COND_CASE; // "COND_CASE";
extern const char* COND_DEFAULT; // "COND_DEFAULT";
extern const char* COND_WHILE;

extern const char* BREAK; // "BREAK";

extern const char* TYPE_INT; // "TYPE_INT";
extern const char* TYPE_CHAR; // "TYPE_CHAR";
extern const char* TYPE_BOOLEAN; // "TYPE_BOOLEAN";
extern const char* TYPE_FLOAT; // "TYPE_FLOAT";
extern const char* TYPE_DOUBLE; // "TYPE_DOUBLE";
extern const char* TYPE_LONG; // "TYPE_LONG";
extern const char* TYPE_UNSIGNED; // "TYPE_UNSIGNED";
extern const char* TYPE_SHORT; // "TYPE_SHORT";

extern const char* INTEGER; // "INTEGER";
extern const char* REAL; // "REAL";
extern const char* STRING; // "STRING";
extern const char* CHAR; // "CHAR";
extern const char* COLON; // "COLON";
extern const char* SEMI; // "SEMI";
extern const char* DOT; // "DOT";
extern const char* OPAREN; // "OPAREN";
extern const char* CPAREN; // "CPAREN";
extern const char* COMMA; // "COMMA";
extern const char* DEFINE; // "DEFINE";
extern const char* ID; // "ID";
extern const char* OBRACE; // "OBRACE";
extern const char* CBRACE; // "CBRACE";
extern const char* OBRACK; // "OBRACK";
extern const char* CBRACK; // "CBRACK";
extern const char* OANGLE; // "OANGLE";
extern const char* CANGLE; // "CANGLE";
extern const char* FSLASH; // "FSLASH";
extern const char* BSLASH; // "BSLASH";
extern const char* QUOTE; // "QUOTE";
extern const char* DQUOTE; // "DQUOTE";
extern const char* END_OF_FILE; // "END_OF_FILE";
extern const char* BAD_CHAR; // "BAD_CHAR";
